说明
软件版本
- 操作系统版本:
CentOS-7.8.2003
- JumpServer版本:
2.0.1
- MySQL数据库版本:
5.7.30
- Redis版本(CentOS7自带):
3.2.12
- Nginx版本(CentOS7自带):
1.16.1
部署方式
- 单机部署
- 容器化
jumpserver
、KoKo
、Guacamol
- MySQL数据库使用yum安装
- Redis使用yum安装
- Nginx使用yum安装,托管JumpServer前端静态资源
lina
,通过websocket方式访问luna
安全加固
- 强制HTTP跳转HTTPS
- 使用acme申请HTTPS证书,用于Nginx配置HTTPS
- 暴露公网,因此禁ping,降低被扫几率
操作系统环境准备
更新操作系统
1 | yum update -y |
安装base包
1 | yum groups install base -y |
安装常用工具
1 | yum install -y nc \ |
配置禁ping
1 | cat > /etc/sysctl.d/99-disable-icmp.conf <<EOF |
安装Docker-CE
卸载旧版本
1 | yum remove -y docker \ |
安装依赖
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
添加YUM源
1 | yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
使用阿里云的YUM源
1 | sed -e 's,https://download.docker.com,https://mirrors.aliyun.com/docker-ce,g' -i /etc/yum.repos.d/docker-ce.repo |
安装Docker-CE
1 | yum install -y docker-ce |
添加配置文件
1 | mkdir -p /etc/docker |
安装MySQL
添加YUM源
1 | yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
禁用MySQL-8.0源
1 | yum-config-manager --disable mysql80-community |
启用MySQL-5.7源
1 | yum-config-manager --enable mysql57-community |
安装MySQL-5.7
1 | yum install -y mysql-community-server-5.7.30-1.el7.x86_64 \ |
配置MySQL
- 修改
/etc/my.cnf
1 | [client] |
启动MySQL
1 | systemctl start mysqld.service |
设置开机启动
1 | systemctl enable mysqld.service |
获取数据库root密码
1 | grep 'temporary password' /var/log/mysqld.log |
安全设置
- 这里使用上面获取的root密码
1 | mysql_secure_installation |
添加数据库和用户
- 这里根据JumpServer的要求创建
1 | CREATE DATABASE jumpserver DEFAULT CHARSET 'utf8' COLLATE 'utf8_bin'; |
安装Redis
YUM安装
1 | yum install -y redis |
配置Redis
/etc/redis.conf
添加一行
1 | requirepass "Redis连接密码" |
创建jumpserver目录
1 | mkdir -p /opt/jumpserver /opt/jumpserver/data |
部署证书
安装acme.sh
1 | curl -sSL https://get.acme.sh | sh |
生成证书
- 这里用阿里云的AccessKey和AccessSecretKey访问
1 | export Ali_Key="阿里云Accesskey" |
安装证书
1 | ~/.acme.sh/acme.sh --installcert \ |
配置acme.sh自动更新
由于 acme 协议和 Let’sEncrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步!
1 | ~/.acme.sh/acme.sh --upgrade --auto-upgrade |
容器化部署
JumpServer
下载镜像
1 | docker pull jumpserver/jms_core:2.0.1 |
创建配置文件
/opt/jumpserver/config.yml
1 | # SECURITY WARNING: keep the secret key used in production secret! |
运行容器
1 | docker run -itd \ |
KoKo
下载镜像
1 | docker pull jumpserver/jms_koko:2.0.1 |
创建配置文件
1 | vim /opt/koko/config.yml |
- 配置如下
1 | # NAME: {{ Hostname }} |
运行容器
1 | docker run -itd \ |
Guacamol
下载镜像
1 | docker pull jumpserver/jms_guacamol:2.0.1 |
运行容器
- 需要启动guacd,监听
127.0.0.1:4822
- 修改tomcat9默认启动端口,从8080改成8081
- 前台启动tomcat
1 | docker run -itd \ |
Nginx
包含了Luna
和Lina
两个项目的代码
下载镜像
1 | docker pull jumpserver/jms_nginx:2.0.1 |
创建配置文件
1 | vim /opt/jms_nginx/nginx.conf |
- 添加以下内容
1 | user nginx; |
运行容器
1 | docker run -itd \ |
Docker-compose统一管理
官方提供了Docker-Compose方式启动,这里配合上面的写好的配置文件魔改一下
.env文件
1 | # 版本号可以自己根据项目的版本修改 |
docker-compose文件
1 | version: "3" |
配置Gitlab Oauth2登录
Gitlab添加Application
- Callback URL
1 | https://jumpserver.example.com/core/auth/openid/callback/ |
- Scopes
- api
- openid
- profile
修改jumpserver
/opt/jumpserver/config.yml
1 | SITE_URL: https://jumpserver.example.com |
重启jumpserver
1 | docker restart jms_core |
OpenID Connect测试结果
- 文档不详细,callback地址看源码才知道
- 通过OpenID获取的用户信息不正确